package com.sybil.spa.dominio;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.Size;

@Entity
@Table(name = "SPA_ANTICIPO_REEMBOLSO")
public class AnticipoReembolso implements Serializable {

   private static final long serialVersionUID = 1L;
   protected AnticipoReembolsoPK llave;
   private String comentarios;
   private String usuarioCreo;
   private String usuarioModif;
   private Reembolso reembolso;
   private Anticipo anticipo;

   public AnticipoReembolso() {
   }

   public AnticipoReembolso(AnticipoReembolsoPK llave) {
      this.llave = llave;
   }

   public AnticipoReembolso(int numeroAnticipo, int numeroReembolso) {
      this.llave = new AnticipoReembolsoPK(numeroAnticipo, numeroReembolso);
   }

   public AnticipoReembolso(AnticipoReembolsoPK llave, String usuarioCreo) {
      this.llave = llave;
      this.usuarioCreo = usuarioCreo;
   }

   @EmbeddedId
   public AnticipoReembolsoPK getLlave() {
      return llave;
   }

   @Size(max = 100)
   @Column(name = "ANRE_COMENTARIOS")
   public String getComentarios() {
      return comentarios;
   }

   @Basic(optional = false)
   @Column(name = "ANRE_USUARIO_CREO")
   public String getUsuarioCreo() {
      return usuarioCreo;
   }

   @Column(name = "ANRE_USUARIO_MODIF")
   public String getUsuarioModif() {
      return usuarioModif;
   }

   @JoinColumn(name = "ANRE_REEM_NUMERO", referencedColumnName = "REEM_NUMERO", insertable = false, updatable = false)
   @ManyToOne(optional = false)
   public Reembolso getReembolso() {
      return reembolso;
   }

   @JoinColumn(name = "ANRE_ANTI_NUMERO", referencedColumnName = "ANTI_NUMERO", insertable = false, updatable = false)
   @ManyToOne(optional = false)
   public Anticipo getAnticipo() {
      return anticipo;
   }

   public void setLlave(AnticipoReembolsoPK llave) {
      this.llave = llave;
   }

   public void setComentarios(String comentarios) {
      this.comentarios = comentarios;
   }

   public void setUsuarioCreo(String usuarioCreo) {
      this.usuarioCreo = usuarioCreo;
   }

   public void setUsuarioModif(String usuarioModif) {
      this.usuarioModif = usuarioModif;
   }

   public void setReembolso(Reembolso reembolso) {
      this.reembolso = reembolso;
   }

   public void setAnticipo(Anticipo anticipo) {
      this.anticipo = anticipo;
   }

   @Override
   public int hashCode() {
      int hash = 0;
      hash += (llave != null ? llave.hashCode() : 0);
      return hash;
   }

   @Override
   public boolean equals(Object object) {
      if (!(object instanceof AnticipoReembolso)) {
         return false;
      }
      AnticipoReembolso other = (AnticipoReembolso) object;
      if ((this.llave == null && other.llave != null) || (this.llave != null && !this.llave.equals(other.llave))) {
         return false;
      }
      return true;
   }

   @Override
   public String toString() {
      return "AnticipoReembolso[ llave=" + llave + " ]";
   }
}
